#include #include #include #include #include #define SERVO_PIN D3 // Cambia el pin según la conexión de tu servo #define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" #define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" BLEServer* pServer = NULL; BLECharacteristic* pCharacteristic = NULL; bool deviceConnected = false; Servo myServo; class MyServerCallbacks : public BLEServerCallbacks { void onConnect(BLEServer* pServer) { deviceConnected = true; }; void onDisconnect(BLEServer* pServer) { deviceConnected = false; } }; class MyCallbacks : public BLECharacteristicCallbacks { void onWrite(BLECharacteristic *pCharacteristic) { std::string value = pCharacteristic->getValue(); if (value.length() > 0) { if (value[0] == '1') { myServo.write(90); // Mueve el servo a 90 grados (posición media) } else if (value[0] == '0') { myServo.write(0); // Mueve el servo a 0 grados (posición mínima) } } } }; void setup() { Serial.begin(115200); pinMode(SERVO_PIN, OUTPUT); myServo.attach(SERVO_PIN); BLEDevice::init("ServoControl"); pServer = BLEDevice::createServer(); pServer->setCallbacks(new MyServerCallbacks()); BLEService *pService = pServer->createService(BLEUUID(SERVICE_UUID)); pCharacteristic = pService->createCharacteristic( BLEUUID(CHARACTERISTIC_UUID), BLECharacteristic::PROPERTY_WRITE ); pCharacteristic->setCallbacks(new MyCallbacks()); pService->start(); BLEAdvertising *pAdvertising = pServer->getAdvertising(); pAdvertising->start(); Serial.println("Esperando la conexión Bluetooth..."); } void loop() { if (deviceConnected) { // Puedes realizar otras tareas mientras está conectado } delay(1000); // Espera para no saturar el procesador }